1. Field of the Invention
This invention relates to programmable logic circuits and, more particularly, to methods and apparatus for increasing the speed and reducing the power utilized by such circuits.
2. History of the Prior Art
Programmable logic arrays (PLAs) are arrays of gates which allow a plurality of input values to be manipulated in accordance with various Boolean functions. Essentially, such an array comprises a first series of input conductors each of which may carry a binary input value and a second series of conductors each of which may carry the inverse of the binary input value carried by an associated one of the first series of input conductors. These first and second input conductors are selectively joined to a third series of conductors each of which is connected to a plurality of AND gates, one input conductor to each one of the third series of conductors. In a PLA, the output of each AND gate (a product term) is available at the input to each of a plurality of OR gates. Since any one of the input conductors may be selectively ,joined to each of the third set of conductors, all of the input conductors are available to each of the AND gates in a PLA. By connecting various AND gate outputs to various OR gates, a particular Boolean function which is the sum of the product terms produced by the AND gates may be furnished at the output of any OR gate. The Boolean output function provided at the output of each of the OR gates is programmable by a user at the manufacturing stage by programming the connections to be made through the particular devices (EPROM cells, fuses, flash EEPROM cells) used in the PLA.
Because the various Boolean functions provided by a PLA are entirely programmable, the speed of operation is slowed to some extent. This occurs because all of the inputs must be available to all of the AND gates, and all of the AND gate outputs must be available to all of the OR gates. Improvements to overcome this loss of speed gave rise to the programmable array logic (PAL.RTM.) in which inputs to the OR gates which sum the product term outputs of the various AND gates are limited in number and hardwired (and are therefore not programmable). Reducing the programmability increases the speed of the array but reduces the options available and limits the number of inputs to each 0R gate to a fixed number. Typically, each OR gate receives input of product terms from eight AND gates.
An improvement to PAL circuits provides hardwired OR gates but varies the number of AND gates connected to each OR gate so that a variety of functions having different numbers of product terms are available in the array. This type of product is called a programmable logic device (PLD). A PLD offers more options than do PALs but tends to under utilize devices since the average number of connections to any OR gate output is three product terms. Another enhancement is called product term allocation. Product term allocation allows some of the inputs to the OR gates to be switched between adjacent OR gates. This allows the numbers of inputs to any OR gate to be increased by a fixed number of input lines and increases the utilization of devices.
As computer designs improve and the number of input terminals to a programmable logic circuit increases, the size of the array increases dramatically. This occurs because there is a ratio between the number of inputs and outputs in an array which provides optimum performance. The result of an increase in the number of inputs to the array is that the array slows down.
Various attempts have been made to increase the speed of operation of these programmable logic circuits. One advance has removed the programmable devices from the speed path of the array. Such an arrangement is disclosed in U.S. Pat. No. 4,930,097 to Ledenbach et al. Although removing these devices has made the transfer through the primary speed path more rapid, a secondary feedback path in such circuitry has been complicated and lengthened. This has slowed the arrays to some extent. Another problem with the prior art solution has been that the circuitry uses too much power to find practical use in more modern computer systems in which low power usage is paramount.